/**
 * Ingenius-Group S.A.S
 *
 * Project: SAU
 * File: InstrumentsServiceAsync.java
 * Date: 28/02/2011
 */

package com.ingenius.sau.client.service;

import java.util.List;

import com.extjs.gxt.ui.client.data.BasePagingLoadConfig;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.ingenius.sau.shared.model.core.SelfEvaluation;
import com.ingenius.sau.shared.model.instruments.Document;
import com.ingenius.sau.shared.model.instruments.Question;
import com.ingenius.sau.shared.model.instruments.Response;
import com.ingenius.sau.shared.util.filter.Filter;

/**
 * Class <strong>InstrumentsServiceAsync</strong>
 * 
 * @author Jesus David
 * @version 0.1
 */
public interface InstrumentsServiceAsync {

	void deleteDocument(String id, AsyncCallback<Boolean> callback);

	void deleteQuestion(String id, AsyncCallback<Boolean> callback);

	void deleteResponse(String id, AsyncCallback<Boolean> callback);

	void findDocuments(List<Filter> filters, BasePagingLoadConfig config,
			AsyncCallback<PagingLoadResult<Document>> callback);

	void findQuestions(List<Filter> filters, BasePagingLoadConfig config,
			AsyncCallback<PagingLoadResult<Question>> callback);

	void findResponses(List<Filter> filters, BasePagingLoadConfig config,
			AsyncCallback<PagingLoadResult<Response>> callback);

	void getDocument(String id, AsyncCallback<Document> callback);

	void getQuestion(String id, AsyncCallback<Question> callback);

	void getResponse(String id, AsyncCallback<Response> callback);

	void loadAllProcesses(AsyncCallback<List<SelfEvaluation>> callback);

	void saveOrUpdateDocument(Document document, AsyncCallback<Boolean> callback);

	void saveOrUpdateQuestion(Question question, AsyncCallback<Boolean> callback);

	void saveOrUpdateResponse(Response question, AsyncCallback<Boolean> callback);

}
